/**
 * 
 */
package logica.fachada;

import java.sql.SQLException;

import objetosNegocio.Almacen;
import objetosNegocio.Cliente;
import objetosNegocio.Familia;
import objetosNegocio.Inventario;
import objetosNegocio.LineaInventario;
import objetosNegocio.ListaAlmacenes;
import objetosNegocio.ListaClientes;
import objetosNegocio.ListaFamilias;
import objetosNegocio.ListaMovimientos;
import objetosNegocio.ListaProductos;
import objetosNegocio.ListaProveedores;
import objetosNegocio.ListaUsuarios;
import objetosNegocio.Movimiento;
import objetosNegocio.Producto;
import objetosNegocio.Proveedor;
import objetosNegocio.Usuario;
import objetosNegocio.excepciones.SecurException;
import objetosNegocio.excepciones.StockException;

/** 
 * <!-- begin-UML-doc -->
 * <!-- end-UML-doc -->
 * @author GESAL
 * @!generated "UML a Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
 */
public interface InterfazGESAL {
	
	//------------------------------------------------------
	//Operaciones Login/Logoff
	//------------------------------------------------------
	public boolean Login (String aliasUsuario, String password) throws SQLException,SecurException;
	
	public void Logoff () throws SQLException;
	
	
	
	//--------------------------------------
	//Operaciones <ALMACEN>
	//--------------------------------------
	public boolean AltaAlmacen(Almacen almacen) throws SQLException,SecurException;

	public boolean ModificarAlmacen (Almacen almacen) throws SQLException,SecurException;
	
	public boolean darDeBajaAlmacen (int codigo) throws SQLException,SecurException;
	
	public Almacen obtenerAlmacen (int codigo) throws SQLException,SecurException;

	public ListaAlmacenes obtenerListadoAlmacenes() throws SQLException,SecurException;
	
	public ListaAlmacenes obtenerListadoAlmacenesActivos() throws SQLException,SecurException;


	//--------------------------------------
	//Operaciones <CLIENTE>
	//--------------------------------------
	public boolean AltaCliente(Cliente cliente) throws SQLException,SecurException;

	public boolean ModificarCliente (Cliente cliente) throws SQLException,SecurException;
	
	public boolean darDeBajaCliente (int codigo) throws SQLException,SecurException;
	
	public Cliente obtenerCliente (int codigo) throws SQLException,SecurException;

	public ListaClientes obtenerListadoClientes() throws SQLException,SecurException;
	
	public ListaClientes obtenerListadoClientesActivos() throws SQLException,SecurException;
	
	
	
	//--------------------------------------
	//Operaciones <PROVEEDOR>
	//--------------------------------------
	public boolean AltaProveedor(Proveedor proveedor) throws SQLException,SecurException;

	public boolean ModificarProveedor (Proveedor proveedor) throws SQLException,SecurException;
	
	public boolean darDeBajaProveedor (int codigo) throws SQLException,SecurException;
	
	public Proveedor obtenerProveedor (int codigo) throws SQLException,SecurException;

	public ListaProveedores obtenerListadoProveedores() throws SQLException,SecurException;
	
	public ListaProveedores obtenerListadoProveedoresActivos() throws SQLException,SecurException;

	
	//--------------------------------------
	//Operaciones <FAMILIA>
	//--------------------------------------
	public boolean AltaFamilia(Familia familia) throws SQLException,SecurException;

	public boolean ModificarFamilia (Familia familia) throws SQLException,SecurException;
	
	public boolean darDeBajaFamilia (int codigo) throws SQLException,SecurException;
	
	public Familia obtenerFamilia (int codigo) throws SQLException,SecurException;

	public ListaFamilias obtenerListadoFamilias() throws SQLException,SecurException;
	
	public ListaFamilias obtenerListadoFamiliasActivas() throws SQLException,SecurException;
	
	
	//--------------------------------------
	//Operaciones <PRODUCTO>
	//--------------------------------------
	public boolean AltaProducto(Producto producto) throws SQLException,SecurException;

	public boolean ModificarProducto (Producto producto) throws SQLException,SecurException;
	
	public boolean darDeBajaProducto (int codigo) throws SQLException,SecurException;
	
	public Producto obtenerProducto (int codigo) throws SQLException,SecurException;

	public ListaProductos obtenerListadoProductos() throws SQLException,SecurException;
	
	public ListaProductos obtenerListadoProductosActivos() throws SQLException,SecurException;
	
	
	//--------------------------------------
	//Operaciones <USUARIO>
	//--------------------------------------
	public boolean AltaUsuario(Usuario usuario) throws SQLException,SecurException;

	public boolean darDeBajaUsuario(int idUsuario) throws SQLException,SecurException;

	public boolean ModificarUsuario(Usuario usuario) throws SQLException,SecurException;

	public Usuario obtenerUsuario(int idUsuario) throws SQLException,SecurException;

	public ListaUsuarios obtenerListadoUsuarios() throws SQLException ,SecurException;

	public ListaUsuarios obtenerListadoUsuariosActivos() throws SQLException,SecurException;

	public boolean modificarPasswordUsuario(String aliasUsuario, String nuevaPassword) throws SQLException,SecurException;

	public boolean validarPasswordUsuario(String aliasUsuario, String password) throws SQLException,SecurException;
	
	
	
	
	//-------------------------------------------
	//Operaciones < INVENTARIO Y MOVIMIENTOS > 
	//-------------------------------------------
	public boolean AltaLineaInventario(LineaInventario lineaInventario) throws SQLException,SecurException;

	public boolean ModificarLineaInventario (LineaInventario lineaInventario) throws SQLException,SecurException;
	
	public LineaInventario obtenerLineaInventario (int idAlmacen, int idProducto) throws SQLException,SecurException;

	public Inventario obtenerInventario_ALLProductos_Almacen(int idAlmacen) throws SQLException,SecurException;
	
	public Inventario obtenerInventario_ProductosActivos_Almacen(int idAlmacen) throws SQLException,SecurException;
	
	public boolean insertarMovimientoDeEntrada(Movimiento datos) throws SQLException,SecurException;
	
	public boolean insertarMovimientoDeSalida(Movimiento datos) throws SQLException,SecurException,StockException;
	
	public boolean insertarMovimientoDeInventario(Movimiento datos) throws SQLException,SecurException;
	
	public ListaMovimientos listadoMovimientosFecha(String fechaIni, String fechaFin)throws SQLException, SecurException;
	
	public ListaMovimientos listadoMovimientosUsuario(int idUsuario)throws SQLException, SecurException;
	
	public ListaMovimientos listadoMovimientosCliente(int idCliente)throws SQLException, SecurException;
	
	public ListaMovimientos listadoMovimientosProveedor(int idProveedor)throws SQLException, SecurException;
	
	public ListaMovimientos listadoMovimientosAlmacenDestino(int idAlmacen )throws SQLException, SecurException;
	

}



